package com.suray.system.run.seer.mysql;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.suray.system.run.seer.type.PointMapType;
import com.suray.wcs.service.pojo.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("wcs_point_map")
public class PointMapDB extends BaseModel implements Serializable {

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 点位名称
     * PortType:
     * 入库：plc入库点
     * 出库：plc出库点
     * 提升机左1、提升机左2、提升机右1、提升机右2：提升机出入库处（2,3,4,5层）
     * 接驳点：1层出入库处
     * 叠盘机：plc叠盘机点
     * 拆盘机：plc拆盘机点
     */
    private String mapName;

    /**
     * wms点位
     */
    private String wmsPoint;

    /**
     * plc点位
     */
    private String plcPoint;

    /**
     * agv点位
     */
    private String agvPoint;

    /**
     * PointMapType
     */
    private PointMapType type;

    /**
     * 节点对应的地图坐标，可以为空（提升机和接驳点坐标不可为空）
     * 即type = IN_NODE,OUT_NODE,IN_OUT_NODE,LIFTER时不可为空
     */
    private String mapNode;

    /**
     * 点位方向
     */
    private Integer direction;

    /**
     * 库区，不是地图库区，分左、中、右3个小库区
     * EJL,EJM,EJR
     */
    private String district;

    /**
     * 点位外面的点（AGV点位，从AGV那获取，直接填写点位名称）
     */
    private String nearPoint;

    /**
     * 锁定对象
     */
    private String lockObj;

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof PointMapDB) {
            PointMapDB port = (PointMapDB) obj;
            if (port.id == this.id && port.type == this.type) {
                return true;
            }
        }

        return false;
    }
}
